package threadDemo;

public class TestMain {
    public static void main(String[] args) {
        //1.创建一个子类的对象
        SubThread subThread = new SubThread();
        //设置子线程的名字
        subThread.setName("子线程打印的数字");
        //2.调用线程的start();启动此此线程，调用相应的run方法
        subThread.start();

        //设置主线程的名字
        Thread.currentThread().setName("主线程打印的数字");
        //主线程也输出100内的数字
        for(int i=1;i<=100;i++){
            System.out.println("主线程："+Thread.currentThread().getName()+":"+i);

            if(i % 10 ==0){
                Thread.currentThread().yield();//主线线程放弃CPU的执行权,也就是释放资源
            }
            //当主线程中的数字等于30时，主线程停止运行，直到SubThread线程执行完后，再接着join()之后的代码执行
            if(i == 30){
                try {
                    subThread.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            try {
                //显式的然当前线程睡眠1000毫秒，也即主线1秒执行一次输出
                Thread.currentThread().sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
        //isAlive()方法：判断当前线程是否还存活
        //执行完成后，查看SubThread已经死了
        System.out.println(subThread.isAlive());//false
        //主线程还存货
        System.out.println(Thread.currentThread().isAlive());//true
    }
}
